搞个气氛 用MATLAB画一棵精致的圣诞树 | 您所在的位置:网站首页 › 圣诞树 枪 › 搞个气氛 用MATLAB画一棵精致的圣诞树 |
2021-12-19 出续集啦!!
在本文的基础上,实现Matlab制作圣诞树和圣诞快乐歌!欢迎试用!
接着奏乐接着舞 Matlab制作圣诞树和圣诞快乐歌_liu08_13的博客-CSDN博客 0.前言马上圣诞节了,今天推一篇用MATLAB画圣诞树的,效果如下图所示: 因为这次用的是MATLAB,不像PYTHON一样需要装一些依赖库,要实现本文的效果,只需安装MATLAB即可。 2.动起手来 2.1 画树要画圣诞树,首先...画棵树,然后再想办法来点缀它。 close all;clear;clc % setup snow=450; % number of snow flakes [0 .. 5000] % draw tree h=0:0.2:25; %vertical grid [X,Y,Z] = cylinder(tree(h)); %produce a tree formed cylinder Z=Z*25; %scale to the right heigth %Add some diffusion to the surface of the tree to make it look more real treeDiffusion=rand(126,21)-0.5;%some horizontal diffusion data %add diffusion to the grid points for cnt1=1:21 for cnt2=16:126%starting above the trunk %get the angle to always diffuse in direction of the radius angle=atan(Y(cnt2,cnt1)/X(cnt2,cnt1)); %split the diffusion in the two coordinates, depending on the angle X(cnt2,cnt1)=X(cnt2,cnt1)+cos(angle)*treeDiffusion(cnt2,cnt1); Y(cnt2,cnt1)=Y(cnt2,cnt1)+sin(angle)*treeDiffusion(cnt2,cnt1); %some Vertical diffusion for each point Z(cnt2,cnt1)=Z(cnt2,cnt1)+(rand-0.5)*0.5; end end %draw the tree h0 = figure('Units','inches'); pos = h0.Position; pos(1) = 1; pos(2) = 1; pos(3) = 7; pos(4) = 7; h0.Position = pos; surfl(X,Y,Z,'light')下一步,给树打个光,填个色,角度调整一下来点三维效果,把坐标系显示去掉,然后一棵绿油油的树就出现了。 %Use as nice green color map (darker at the bottom, lighter at the top) r=(0.0430:(0.2061/50):0.2491)';%red component g=(0.2969:(0.4012/50):0.6981)';%green component b=(0.0625:(0.2696/50):0.3321)';%blue component map=[r,g,b];%join in a map for cnt=1:6 %change the lower part to brown for the trunk map(cnt,:)=[77,63,5]/265; end colormap(map)%set the map view([-37.5,4])%Change the view to see a little more of the Actual 3D tree lighting phong %some nice lighting shading interp %remove grid and smoothen the surface color axis equal %takes care of display in the right proportion axis([-10 10 -10 10 0 30]) %give some more axis space (for the snow later) axis off %but don't show axis hold on %to draw the rest title('Merry Christmas','color','w',... 'fontsize',25,... 'fontweight','Bold')接下来,把图像底色调一下,用一个五彩斑斓的黑加点星空蓝当背景(此处在某甲方选手不断提出色彩需求后最终确定的颜色,致谢!) 然后再摆几个小礼物盒子在树下,这过节气氛杠杠的。 最后,关键部分,撒点雪花,再画点彩灯到图上,调整三维图像的角度,来点动画效果,结束战斗! 此处有知识点!敲黑板!!如何清除cell数组中的空元素。 im(cellfun(@isempty,im))=[]; file2write = 'chris.gif'; for ii = 1:length(im) [A, map] = rgb2ind( im{ii}, 256); if ii == 1 imwrite(A, map, file2write, 'gif','LoopCount',Inf,'DelayTime', 0.12); else imwrite(A, map, file2write, 'gif','WriteMode','append','DelayTime', 0.12); end end 3.结论大功告成。 用MATLAB实现一个Bling Bling的圣诞树,祝大家玩得开心。 关注作者公众号 海洋纪 ,后台回复 圣诞快乐 获取本文代码。 |
CopyRight 2018-2019 实验室设备网 版权所有 |